<?php
class AcessoEvento extends Zend_Db_Table
{
	protected $_name = 'acesso_evento';
	protected $_primary = 'id_acesso';
	private $cadastroConfiavel;
	private $erro_encontrado = false;
	private $erro = false;
	public $old_status;

	public function __construct($cadastroConfiavel=true){
		parent::__construct();
		$this->id_acesso=null;
		$this->id_participante=null;
		$this->id_evento=null;
		$this->id_categoria_acesso=null;
		$this->id_status=null;
		$this->cd_validacao=null;
		$this->dt_envio_email=null;
		$this->in_email_valido=null;
		$this->cadastroConfiavel=$cadastroConfiavel;
		$this->consistir();
	}

	public function setCadastro($cadatro){
		$this->cadastroConfiavel=$cadatro;
		$this->consistir();
	}
	private function consistir(){
		if ($this->cadastroConfiavel==true){
			$this->_name = 	'acesso_evento';
		} else {
			$this->_name = 'aux_acesso_evento';
		}
	}

	private function populate($row){
		$this->id_acesso			=$row['id_acesso'];
		$this->id_participante		=$row['id_participante'];
		$this->id_evento			=$row['id_evento'];
		$this->id_categoria_acesso	=$row['id_categoria_acesso'];
		$this->id_status			=$row['id_status'];
		$this->cd_validacao			=$row['cd_validacao'];
		$this->old_status			=$this->id_status;
		$this->in_email_valido      =$row['in_email_valido'];
		$this->dt_envio_email		=$row['dt_envio_email'];		
	}
	
	public function loadPessoa($participante){
		$db = Zend_Registry::get('db');
		$sql = 'select acev.id_acesso,
					   acev.id_participante,
					   acev.id_evento,
					   acev.id_categoria_acesso,
					   acev.id_status,
					   acev.cd_validacao,
					   acev.in_email_valido,
					   acev.dt_envio_email,
					   acev.in_ativo
		          from acesso_evento acev
		         where acev.id_participante='.$participante;
		$row=$db->query($sql)->fetch();
		$this->populate($row);
	}
	
	public function load($id){
		$row = $this->find($id)->current();
		if ($row != null){
			$this->populate($row);
			$this->fisica = new Fisica($this->cadastroConfiavel);
			$this->fisica->load($this->id_participante);
			$this->juridica = new Juridica($this->cadastroConfiavel);
			$this->juridica->load($this->fisica->id_juridica);
		}
	}	
	
	public function _load($id){
		$row = $this->find($id)->current();
		$this->populate($row);
	}

	public function emailEnviado(){
		$this->in_email_valido=1;
		$this->id_status  	  =3; //E-mail confirmado
		$this->dt_envio_email =date('Y-m-d H:m:s');
	}

	public function salvar(){
    	$dados = array('id_acesso'				=>$this->id_acesso,
				 	   'id_participante'		=>$this->id_participante,
					   'id_evento'				=>$this->id_evento,
					   'id_categoria_acesso' 	=>$this->id_categoria_acesso,
					   'id_status'				=>$this->id_status,
    				   'cd_validacao'			=>$this->cd_validacao,
    				   'in_email_valido'		=>$this->in_email_valido,
    				   'dt_envio_email'			=>$this->dt_envio_email);

    	if ($this->id_acesso == null){
			$this->id_acesso = $this->insert($dados);
    	}
    	else {
    		$where = "id_acesso = " . $this->id_acesso;
			$this->update($dados, $where);
    	}
    }

	public function excluir($id){
		if ($this->cadastroConfiavel==true){
			$autenticacao = new Autenticacao();
			$where = "id_acesso=".$id;
			$autenticacao->delete($where);
		}
    	$this->delete($where);
	}

	public function buscar($evento, $categoria, $participante, $empresa, $status, $fumtur, $order=1, $asc=0 ){
    	$db = Zend_Registry::get('db');
	   	$sql = 
			'   select aace.id_acesso id,
				       aufi.ds_email,
				       aufi.ds_nome_credencial fisica,
				       aace.id_categoria_acesso,
				       aace.id_status,
				       auju.ds_fantasia,
				       ifnull(aufi.dt_inclusao, auju.dt_inclusao) dt_inclusao,
				       aufi.nr_celular,
               (select concat(ds_cidade, concat(" - ", e.ds_sigla))
                  from cidade c, 
                       estado e 
                 where id_cidade=auju.id_cidade
                   and c.id_estado = e.id_estado) localidade
				  from aux_acesso_evento aace,
				       aux_fisica        aufi,
				       aux_juridica      auju
				 where aace.id_participante = aufi.id_fisica
				   and aufi.id_juridica = auju.id_juridica';
	   	if ($evento>0){
	   		$sql.=' and aace.id_evento='.$evento;
	   	}
	   	if ($categoria>0){
	   		$sql.=' and aace.id_categoria_acesso='.$categoria;
	   	}
	    if ($participante!=null){
    		$sql.=' and (aufi.ds_nome like("%'.$participante.'%") or aufi.ds_nome_credencial like ("%'.$participante.'%") or aufi.ds_ultimo_nome like ("%'.$participante.'%")';
    	}
    	if ($empresa!=null){
    		$sql .=' and (auju.ds_razao_social like("%'.$empresa.'%") or auju.ds_fantasia like ("%'.$empresa.'%"))';
    	}

	   	if ($status>0){
	   		$sql.=' and aace.id_status='.$status;
	   	}
	   	if ($fumtur>0){
	   		$sql .=' and aufi.id_participante in  (select fu.id_fisica
	   		                                         from integrante_fumtur
	   		                                        where id_fumtur='.$fumtur.')';
	   	}
	   	if ($order==0){ $order=1;}
		$orderBy = "asc";
		if($asc == 1){
			$orderBy = "desc";
		}
		$sql .= " order by " . $order . " ".$orderBy;
		echo $sql;
		return $db->query($sql);

	}
	
	public function validar(){
		$this->erro = new AlertaErro();
		if ($this->id_participante=="0" || 
			$this->id_evento=="0" || 
			$this->id_status=="0" ||
			$this->id_categoria_acesso==0){
			$this->erro->load(5); //Campos de preenchimento obrigatório.
			$this->erro_encontrado = true;
		}else{
			$this->erro_encontrado = false;			
		} 
	}

	public function hasError(){
		return $this->erro_encontrado;
	}
	
    public function getErrorMsg(){
    	return $this->erro->ds_mensagem;
    }	
}